// 实现一个方法flatten，将对象扁平化
// 4.1 代码实现
function flatten(obj) {
    let result = {};
    let process = (key, value) => {
        if (Array.isArray(value)) {
            // console.log('数组',key,value)
            for (let i = 0; i < value.length; i++) {
                process(`${key}[${i}]`, value[i])
            }
            if (value.length === 0) {
                result[key] = [];
            }
        } else if (Object.prototype.toString.call(value) === "[object Object]") {
            // console.log('对象',key,value)
            let objArr = Object.keys(value);
            objArr.forEach(item => {
                process(key ? `${key}.${item}` : `${item}`, value[item])
            });
            if (objArr.length === 0 && key) {
                result[key] = {};
            }
        } else {
            result[key] = value;
        }
    }
    process('', obj)
    console.log(result)
    return result;
}


// 最终效果是执行

flatten({
    a: {
        b: 1,
        c: 2,
        d: { e: 5 }
    },
    b: [1, 3, { a: 2, b: 3 }],
    c: 3,
    d: [],
    e: {}
})
// // 得到
// {
//   'a.b': 1,
//   'a.c': 2,
//   'a.d.e': 5,
//   'b[0]': 1,
//   'b[1]': 3,
//   'b[2].a': 2,
//   'b[2].b': 3，
//   'c': 3
// }          